// Texture Interface
// (c) jimon game studio

#ifndef JEH_ITEXTURE
#define JEH_ITEXTURE

#include "jeUnknown.h"
#include "IImage.h"

namespace je
{
	namespace video
	{
		//! Texture Format
		enum TextureFormat
		{
			//! RGBA 8 bit
			TF_RGBA8 = 0,

			//! RGBA float 32 bit
			TF_RGBA32F = 1,

			//! Depth Texture 32 bit
			TF_DEPTH32 = 2,

			//! RG float 16 bit Texture
			TF_RG16F = 3
		};

		//! Texture Interface
		class ITexture:public je::jeUnknown
		{
		public:

			//! Destructor
			virtual ~ITexture()
			{
			}

			//! Get Size
			virtual const jeVector2di & GetSize() = 0;

			//! Copy To
			virtual void CopyTo(ITexture * Texture) = 0;

			//! Copy To
			virtual void CopyTo(IImage * Image) = 0;

			//! Copy From
			virtual void CopyFrom(ITexture * Texture)
			{
				Texture->CopyTo(this);
			}

			//! Copy From
			virtual void CopyFrom(IImage * Image) = 0;
		};
	}
}

#endif
